package com.example.java.path;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class PathMain {
    public static void main(String[] args) {
        // 获取当前工作目录，即当前项目的根目录
        String currentDir = System.getProperty("user.dir");
        System.out.println("当前工作目录: " + currentDir);

        // 获取当前文件目录，
        Path currentDir1 = Paths.get("").toAbsolutePath();
        System.out.println("当前文件目录: " + currentDir1);

        // 获取当前类文件所在目录
        String classDir = PathMain.class
                .getProtectionDomain()
                .getCodeSource()
                .getLocation()
                .getPath();
        System.out.println("类所在目录: " + classDir);

        // 创建 Path 路径对象，文件或目录的路径
        Path path = Paths.get("example.txt");

        // 获取路径信息
        System.out.println("文件名: " + path.getFileName()); // example.txt
        System.out.println("父目录: " + path.getParent());   // null（相对路径）
        // /home/lcqh/桌面/Java/springboot-demo/example.txt
        System.out.println("绝对路径: " + path.toAbsolutePath()); // 转换为绝对路径

        // 创建文件
        Path path1 = Paths.get("example.txt");
        try {
            if (!Files.exists(path1)) {
                Files.createFile(path1);
                System.out.println("文件创建成功！");
            } else {
                System.out.println("文件已存在！");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 创建单级目录
        Path dir = Paths.get("mydir");
        try {
            Files.createDirectory(dir); // 创建单级目录
            System.out.println("目录创建成功！");
        } catch (IOException e) {
            System.out.println("目录已存在或路径无效！");
        }

        // 创建多级目录
        Path nestedDir = Paths.get("parent/child/grandchild");
        try {
            Files.createDirectories(nestedDir); // 自动创建所有缺失的父目录
            System.out.println("多级目录创建成功！");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
